// 数列中的每一项数字的个数一定都是 2 的倍数，因为每一项都是对上一项的描述，而每一组描述都需要
// 两个字符来完成，进一步推论出更为重要的结论：任何一项的数字序列中，一定只有 1 2 3 三个字符中
// 的若干个组成，而不会出现其它数字
// 如 111321131221 中偶数位置数字序列分别是 1 3 1 3 2 1 相邻的两个一定不相等，否则如果是 
// 111121131221 则前面四个数表示前一项对应的是 11，这显然不合理
// (\d)(a)\1 匹配第一是数字，第二是字符，第三 \1 必须匹配第一个一样的数字重复一次，也就是
// 被引用一次。
// 匹配连续 0 次以上的数字

var countAndSay = function(n) {
  let prev = '1'
  for(let i = 1; i < n; i++){
      prev = prev.replace(/(\d)\1*/g, item =>`${item.length}${item[0]}`)
  }
  return prev
};